/*
 * ComandoSQL.h
 *
 *  Created on: 08/08/2012
 *      Author: Guilherme Branco
 */
#ifndef CMDSQL_H
#define CMDSQL_H
/*----------------------------------*/
#include "sqlite3.h"
#include "ErroPersistencia.h"
#include "ElementoResultado.h"
#include <string>
#include <list>
#include <cstdlib>
/*----------------------------------*/
class ComandoSQL {
private:
    /** @details Nome do banco de dados que sera informado na funcao ComandoSQL.
    */
    const char *nomeBancoDados;
    sqlite3 *database;
    char *mensagem;
    /** @details Variavel do tipo inteiro que quando assume o valor SQLITE_OK (= 0) representa execucao sem erros.
    */
    int rc;
    void conectar();
    void desconectar();
    /** @details Metodo responsavel por atribuir a uma lista os resultados selecionados na tabela do BD.
    */
    static int callback(void *, int, char **, char **);
protected:
    static list<ElementoResultado> listaResultado;
    /** @details Este atributo representa o comando SQL, e sera construido de forma diferente em cada subclasse.
    */
    string comandoSQL;
public:
    ComandoSQL() {
    nomeBancoDados = "testedb";
        conectar();
    }
    ~ComandoSQL(){
        desconectar();
    }
    /** @details Executa o comando e lanca uma excecao caso seja necessario.
    */
    void executar();
};
#endif
